perm filename SBRHY.F4[12,LCS] blob sn#023711 filedate 1974-03-03 generic text, type T, neo UTF8
00100	C THIS SUBROUTINE SELECTS FROM 5 TWO-BEAT RHYTHMIC CELLS
00200		SUBROUTINE SUBR
00300		COMMON /INS/ INST(27),BG(60)
00400		COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF
00500	
00600		DIMENSION RH(16),J(6),RH2(16),J2(6)
00700		DATA J/1, 3, 7, 10,15,17/, RH/1.,1.,  .75,.25,.5,.5,
00800		1 .5,1.,.5,  .333,.334,.333,.75,.25,  1.5,.5/
00900		1, J2/1, 4, 5, 7, 9,17/, RH2/.666,.667,.667, 2.,
01000		1 1.,1.,  1.5,.5,  8*.25/
01100	C  THE J ARRAY HOLDS POINTERS TO BEG. OF RHYTH CELLS
01200	C  RH HOLDS THE RHYTHMIC REAL-TIME VALUES.
01300	
01400	
01500	
01600		IF(CNT(1).NE.1.OR.INUM.NE.1.OR.IPAR.NE.2)GO TO 1
01650		IF(IPAR.NE.2)GO TO 1
01700		IA=0
01800	C  IA WILL BE USED TO AVOID REPEATED NOTES
01900		IA2=0
02000	2	L=RAND(1.0,5.999)
02100	C  PICKS A RHYTHMIC CELL AT RANDOM
02200	22	L2=RAND(1.0,5.999)
02300		IF(L2.NE.5.AND.(L.EQ.1.OR.L.EQ.3.OR.L.EQ.5))GO TO 22
02400		M=J(L+1)
02500		K=J(L)
02600	C  K AND M ARE POINTERS TO BEG. AND 1 PAST THE END OF RHYTH CELL
02700		M2=J2(L2+1)
02800		K2=J2(L2)
02900	1	IF(INUM.EQ.1)GO TO 10
03000	C  JUMP FOR INST #1
03100		IF(IPAR.NE.2)GO TO 3
03200		P(2)=RH2(K2)
03400		K2=K2+1
03500	C  UPDATE THE COUNTER
03600		RETURN
03900	10	IF(IPAR.NE.2)GO TO 33
03910		IF(K.EQ.M)GO TO 2
03955	C  GO BACK IF A CELL IS COMPLETE
04000		P(2)=RH(K)
04200		K=K+1
04300	C  UPDATE THE COUNTER
04400		RETURN
04500	
04550	3	N=P(3)
04560	C  NOTE NUMS. MUST BE PUT IN INTEGER FORM FOR COMPARISON.
04600		IF(N.EQ.IA2)N=N+L2
04700		IF(N.NE.A)GO TO 5
04750		N=N+L
04775		GO TO 3
04800	5	IA2=N
04850		P(3)=N
04900		RETURN
05000	
05050	33	N=P(3)
05100		IF(N.EQ.IA)N=N+L
05200		IF(N.NE.IA2)GO TO 55
05250		N=N+L2
05275		GO TO 3
05300	55	IA=N
05350		P(3)=N
05400		RETURN
05500		END
06000	QQQ  
06100	BRIT ALL 0 20.2; THE LAST NOTE WILL BEGIN AT TIME 20"  
06200	P2 ALL SUBN; ALL RHYTH IS SET IN THE SUBROUTINE  
06300	P3 MO/10 C2,C3  C5,A5/10 C5,A5  C2,C3*;
06400	P4 ALL 1 200, 1100;
06500	P5 ALL F1/P6 ALL SUBN/P7 ALL F4/P8 F5;
06600	END;  
06700	CLAR /P3 REP/END;
06800	BRIT 19.9/P2 2/END;  FOR LAST NOTE'S RHYTH. 
06900	CLAR 19.9/P2 2/END;  FOR LAST NOTE'S RHYTH. 
07000	RUN;